package ewu

import scala.collection.mutable.ArrayBuffer
import ewu._

/**
 * Die Expression-Klasse stellt die Oberklasse fuer alle
 * Ausdruecke dar.
 */

trait Expression {
  def evaluate(env: Environment): Option[BigInt]
  override def toString: String
  def reduce: Expression
  def tab (t: Int): String =
    if (t > 0) " " + tab(t-1)
    else ""
    
  def getVariables(a: ArrayBuffer[Name])
  def replaceVariable(fromVar: Name, toVar: Expression)
}